package XML;

import modelo.improvistos.*;

import modelo.tablero.Ciudad;



import org.jdom.Element;


import java.util.List;

public abstract class GeneradorDeMapaXml {
	
	private Element nodoAux;
	public Ciudad crearMapa (Element nodoCiudad){
		
		int cantidadDeFilas = Integer.parseInt(nodoCiudad.getAttributeValue("CantidadDeFilas"));
		int cantidadDeColumnas = Integer.parseInt(nodoCiudad.getAttributeValue("CantidadDeColumnas"));
		int filMeta = Integer.parseInt(nodoCiudad.getAttributeValue("UbicacionLlegada"));
		Improvisto improvisto;
		
		Ciudad mapaXML = new Ciudad(cantidadDeFilas,cantidadDeColumnas);
		nodoAux = nodoCiudad.getChild("Improvistos");
	
		
		List listaImprovistos =  nodoAux.getChildren("Improvisto");
		
		for(int i = 0 ; i < listaImprovistos.size() ; i ++){
			Element unImprovisto = (Element)(listaImprovistos.get(i));
			
			improvisto = crearImprovisto(unImprovisto.getAttributeValue("TipoImprovisto"));
			String fila = unImprovisto.getAttributeValue("UbicadoEnFila");
			String columna = unImprovisto.getAttributeValue("UbicadoEnColumna");
			if((unImprovisto.getAttributeValue("TipoImprovisto")).equals("Llegada")){
				mapaXML.setLlegada(filMeta);
			}else{
				mapaXML.setImprovistoEn(improvisto, Integer.parseInt(fila),  Integer.parseInt(columna));
			}
		
		}
		return mapaXML;
	}
	
	
	private Improvisto crearImprovisto(String tipoDeImprovisto){
		Improvisto nuevoImprovisto = new Transformacion();
		if(tipoDeImprovisto.equals("Piquete")) nuevoImprovisto = new Piquete();
		if(tipoDeImprovisto.equals("Policia")) nuevoImprovisto = new Policia();
		if(tipoDeImprovisto.equals("Pozo")) nuevoImprovisto = new Pozo();
		if(tipoDeImprovisto.equals("Desfavorable")) nuevoImprovisto = new Desfavorable();
		if(tipoDeImprovisto.equals("Favorable")) nuevoImprovisto = new Favorable();
		
		return nuevoImprovisto;
	}

}
